package com.hqq.service;

import com.hqq.handler.MyIncationHandler;
import com.hqq.service.impl.SomeServiceImpl;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class MyApp {
    public static void main(String[] args) {

        /**
         * 原来创建对象的方式
         */
//        SomeService test= new SomeServiceImpl();
//        test.doSome();
//        System.out.println("=======");
//        test.doOther();

        /**
         * 使用jdk的proxy创建代理对象
         */
        //创建目标对象
        SomeService target = new SomeServiceImpl();
        //创建InvocationHandler对象
        InvocationHandler handler = new MyIncationHandler(target);
        //使用proxy创建代理
        SomeService proxy = (SomeService) Proxy.newProxyInstance(target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                handler);

        //通过代理执行方法，会调用handler中的invoke（）
        //同时jdk接收到这个doSome之后就会传给invoke方法的method参数,执行到method.invoke方法时 就执行doSome方法
        proxy.doSome();
        System.out.println("=============");
        proxy.doOther();




    }
}
